﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Windows.Forms;

namespace Biblioteca
{
   class ClassDB
        {
            private OleDbConnection Conexion;
            BindingSource BS;
            OleDbCommand Comando;
            public ClassDB()
            {
                BS = new BindingSource();
                Comando = new OleDbCommand();
                Conexion = new OleDbConnection();
                Conexion.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\access\biblioteca.accdb;Jet OLEDB:Database Password=cefcet";
                Comando.Connection = Conexion;
            }

            public void CerrarConexion()
            {
                Conexion.Close();
            }

            public void AbrirConexion()
            {
                Conexion.Open();
            }

            public BindingSource Consulta(string CadenaEnSQL)
            {
                #region Documentacion
                /*
             * Esta funcion me sirve para hacer una consulta completa, es decir tener disponible 
             * una tabla completa, ejem: tener toda la informacion que contiene una tabla
             * La cadena tiene que estar escrita en SQL
             */
                #endregion
                AbrirConexion();
                Comando.CommandText = CadenaEnSQL;
                BS.DataSource = Comando.ExecuteReader();
                CerrarConexion();
                return BS;

            }

            public Object ConsultaSimple(string CadenaEnSQL)
            {
                AbrirConexion();
                Comando.CommandText = CadenaEnSQL;
                Object Objeto = Comando.ExecuteScalar();
                CerrarConexion();
                return Objeto;
            }

            public void InsertarRegistro(string Tabla, string Campos, string Valores)
            {
                AbrirConexion();
                Comando.CommandText = "insert into " + Tabla + " (" + Campos + ") values (" + Valores + ")";
                Comando.ExecuteNonQuery();
                CerrarConexion();
            }

            public void ModificarRegistro(string Tabla, string Valores, string Condicion)
            {
                AbrirConexion();
                Comando.CommandText = "update " + Tabla + " set " + Valores + " ";
                if (Condicion.Trim() != "")
                {
                    Comando.CommandText += " where " + Condicion;
                }
                Comando.ExecuteNonQuery();
                CerrarConexion();
            }
            
            public void ModificarRegistroPorClave(string Tabla, string Valores, string Condicion, Int32 codigo)
            {
                AbrirConexion();
                Comando.CommandText = "update " + Tabla + " set " + Valores + " ";
                if (Condicion.Trim() != "")
                {
                    Comando.CommandText += " where " + Condicion + codigo;
                }
                Comando.ExecuteNonQuery();
                CerrarConexion();
            }

            public void EliminarRegistro(string Tabla, string Condicion)
            {
                AbrirConexion();
                Comando.CommandText = "delete from " + Tabla;
                if (Condicion.Trim() != "")
                {
                    Comando.CommandText += " where " + Condicion;
                }
                Comando.ExecuteNonQuery();
                CerrarConexion();
            }
        }
 }
